1 DIMV(11),H(11):PRINTCHR$(142) 5 FOR A=1TO11:READV(A),H(A):NEXT 10 DATA 6,3,1,11,6,11,11,11 11 DATA 1,19,6,19,11,19 12 DATA 1,27,6,27,11,27,6,35 15 Z$="" 20 POKE53281,6:POKE53280,15:PRINT"" 50 : 60 : 100 DEF FNP(X)=2^(X-1) 200 DIMS(165),R(30,2),L(11,11),W(3),A(165,11) 300 REM FRENCH MILITARY GAME, SIXTH BOOK OF MATHEMATICAL GAMES FROM SCIENTIFIC 305 REM AMERICAN BY MARTIN GARDNER 400 REM INCORPORATES MATCH. LEARNING FROM UNEXPECTED HANGING BY MARTIN GARDNER 500 REM PROGRAMMED BY G.H. HERD SEPT.78 PUBLISHED IN CREATIVE COMPUTING SEPT.79 600 PRINT"[147]" 700 PRINT""; 808 PRINT"THE FRENCH MILITARY GAME" 900 PRINT 1000 PRINT""; 1100 PRINT" BY MARTIN GARDNER" 1200 PRINT:PRINT"" 1250 PRINT"DO YOU NEED INSTRUCTIONS?";:POKE198,0:WAIT198,1:GETIN$ 1260 IFIN$="Y" OR IN$="N"THEN1275 1265 PRINT"PLEASE ENTER Y/N":GOTO700 1275 PRINT"[147]LOADING DATA....PLEASE WAIT" 1300 FORL=1TO9 1400 LETL1=FNP(L) 1500 FORM=L+1TO10 1600 LETM1=FNP(M) 1700 FORR=M+1TO11 1880 LETS(I)=L1+M1+(FNP(R)) 1900 LETI=I+1 2000 NEXTR 2100 NEXTM 2200 NEXTL 2300 REMPRINT"[147]" 2305 PRINT"" 2310 REMNT"DO YOU NEED INSTRUCTIONS"; 2315 REMINPUTIN$:PRINT"[147]" 2320 IFLEFT$(IN$,1)<>"N"THENGOSUB18100 2400 REM LOAD UP LEARNING CURVE 2500 REM DISK COMMAND "LOAD DATA #5,34,A 2600 [129]I[178]1[164]30 2700 [129]J[178]1[164]2 2800 [136]R(I,J)[178]0 2900 [130]J 3000 [130]I 3100 [129]I[178]1[164]11 3200 [129]J[178]1[164]11 3300 [135]L(I,J) 3400 [130]J 3500 [130]I 3600 [143] L(I.J)=0 MEANS MOVE I TO J NOT LEGAL 3700 [143] L(I,J)=1 MEANS MOVE I TO J LEGAL BLACK ONLY 3800 [143] L(I,J)=2 MEANS MOVE I TO J LEGAL FOR BOTH 3900 [143] 4000 [136]B[178]6 4100 [136]W(1)[178]1 4200 [136]W(2)[178]2 4300 [136]W(3)[178]4 4400 [136]I0[178]1 4500 [141]11000 4600 [141]15000 4700 [143] MAIN PROGRAM LOOP 4800 : 4850 : 4860 : 4870 : 4880 [153]Z$;"WHITE PIECES ARE AT ";W(1);" ";W(2);" ";W(3)" " 4900 [153]"THE BLACK PIECE IS AT ";B" " 5000 [153]"YOUR MOVE, FROM-TO X,Y CMDCMDCMDCMDCMDCMDCMD"; 5100 [133]X,Y 5200 [139]X[178]0[175]Y[178]0[167]7800 5300 [143] WAS IT A LEGAL MOVE 5400 [141]9100 5500 [139]L2[178]1[167]5800 5600 [153]"FOUL !!!!! TRY AGAIN." 5700 [137]4800 5800 [143] LEGAL MOVE - WHAT IS WHITE POSITION INDEX (S3) 5900 [153]"":P$[178]" CMDCMD " 5905 [145]X[141]17000,17100,17200,17300,17400,17500,17600,17700,17800,17900,18000 6000 [153]"":P$[178]" CMDCMD WAIT" 6005 [145]Y[141]17000,17100,17200,17300,17400,17500,17600,17700,17800,17900,18000 6100 [141]11000 6200 [139]I0[179][178]19[167]6600 6300 [153]"THAT'S 20 MOVES, ACE, AND YOU HAVEN'T TRAPPED ME." 6400 [137]7800 6500 [143] WHAT IS BLACK'S BEST MOVE - IF ANY 6600 [141]11600 6700 [139]M4[178]0[167]8100 6800 [143] COMPUTER MOVES 6900 [153]Z$;:[153]" ":[153]Z$"ONI MOVE TO ";M4 7000 [153]"":P$[178]" CMDCMD " 7005 [145]B[141]17000,17100,17200,17300,17400,17500,17600,17700,17800,17900,18000 7100 [153]"":P$[178]"STOP CMDCMD WAIT" 7105 [145]M4[141]17000,17100,17200,17300,17400,17500,17600,17700,17800,17900,18000 7150 [153]Z$ 7200 [136]R(I0,1)[178]S3 7308 [136]R(I0,2)[178]M4 7400 [136]B[178]M4 7500 [136]I0[178]I0[170]1 7608 [139]B[179][177]1[167]4700 7700 [143] HERE ONLY IF MACHINE WINS 7800 [153]Z$"I WIN......" 7900 [136]W[178]1 8000 [137]8300 8100 [153]Z$"I LOST......" 8200 [136]W[178][171]1 8300 [143] UPDATE ARRAY A 8400 [141]13000 8500 [153]"WANT TO PLAY AGAIN"; 8600 [133]E$ 8700 [139][200](E$,1)[178]"Y"[167]4000 8800 [139][200](E$,1)[178]"N"[167]9000 8900 [153]"PLEASE ANSWER Y OR N":[153]:[137]8500 9000 [143] ***** TEXT ***** 9005 [151]198,0 9010 [153]"LOAD" 9015 [153]"" 9020 [153]""; 9025 [153]"* * * THE END * * *" 9030 [153]"" 9035 [137] 63000 9100 [143] CHECK WHITES MOVE FOR LEGALIVY 9200 [136]L2[178][171]1 9308 [129]I2[178]1[164]3 9400 [136]J2[178]I2 9500 [139]W(I2)[178]X[167]9900 9600 [130]I2 9700 [143] NO WHITE PIECE AT X 9800 [137]10900 9900 [143] IF BLACK IS AT Y THEN ILLEGAL 10000 [139]B[178]Y[167]10900 10100 [143] ILLEGAL IF WHITE AT Y 10200 [129]I2[178]1[164]3 10300 [139]W(I2)[178]Y[167]10900 10400 [130]I2 10500 [139]L(X,Y)[179][177]2[167]10900 10600 [143] LEGAL MOVE FOR WHITE 10700 [136]W(J2)[178]Y 10800 [136]L2[178]1 10900 [142] 11000 [143] CALCULATE NEW WHITE POSITION NUMBER 11100 [136]A3[178][165]P(W(1))[170][165]P(W(2))[170][165]P(W(3)) 11200 [129]S3[178]1[164]165 11300 [139]S(S3)[178]A3[167]11500 11400 [130]S3 11500 [142] 11600 [143] PICK BLACK'S BEST MOVE 11700 [136]M4[178]0 11800 [129]I4[178]1[164]11 11900 [139]L(B,I4)[178]0[167]12800 12000 [143] OCCUPIED BY WHITE? 12100 [129]J4[178]1[164]3 12200 [139]W(J4)[178]I4[167]12800 12300 [130]J4 12400 [139]M4[178]0[167]12700 12500 [139]A(S3,M4)[177][178]A(S3,I4)[167]12800 12600 [143] NEW BEST MOVE 12700 [136]M4[178]I4 12800 [130]I4 12900 [142] 13000 [143] UPDATE AT GAME END 13100 [129]I6[178]1[164]I0[171]1 13200 [136]S[178]R(I6,1) 13300 [136]M[178]R(I6,2) 13400 [136]A(S,M)[178]A(S,M)[170]W 13500 [130]I6 13600 [142] 13700 [143] DATA FOR L ARRAY 13800 [131] 0,2,2,2,0,0,0,0,0,0,0 13900 [131] 1,0,2,0,2,2,0,0,0,0,0 14000 [131] 1,2,0,2,0,2,0,0,0,0,0 14100 [131] 1,0,2,0,0,2,2,0,0,0,0 14200 [131] 0,1,0,0,0,2,0,2,0,0,0 14300 [131] 0,1,1,1,2,0,2,2,2,2,0 14400 [131] 0,0,0,1,0,2,0,0,0,2,0 14500 [131] 0,0,0,0,1,1,0,0,2,0,2 14600 [131] 0,0,0,0,0,1,0,2,0,2,2 14700 [131] 0,0,0,0,0,1,1,0,2,0,2 14800 [131] 0,0,0,0,0,0,0,2,2,2,0 15000 [143] DRAW BOARD 15100 [153]"LOAD" 15225 [153]" PRINT2SPC(SPC(SPC( PRINT5SPC(SPC(SPC( PRINT8SPC(SPC(SPC( 15250 PRINT" [166] [166][164][164][164][164][166] [166][164][164][164][164][166] [166] 15300 [153]" SPC( SPC( SPC( SPC( SPC( SPC( 15400 PRINT" [206][166][166][166][166][205] [166][166][166][166] [206][166][166][166][166][205] 15500 [153]" (null) THEN (null) THEN (null) THEN (null) 15600 PRINT" [153]1[166][166][166] [206] [153]3[166][166][166] [205] [153]6[166][166][166] [206] [153]9[166][166][166] [205] [153]11[166][166] 15700 [153]" SPC( SPC((null)TOTOTOSPC( SPC(TOTOTO(null)SPC( SPC((null)TOTOTOSPC( SPC(TOTOTO(null)SPC( SPC( 15800 PRINT" [166] [166][205] [166] [166] [206][166] [166][205] [166] [166] [206][166] [166] 15900 [153]" SPC(SPC(SPC(SPC( (null) SPC(SPC(SPC(SPC( (null) SPC(SPC(SPC(SPC( (null) SPC(SPC(SPC(SPC( (null) SPC(SPC(SPC(SPC( 16000 PRINT" [205] [167] [206] [167] [205] [167] [206] 16100 [153]" (null)PRINT4SPC(SPC(SPC((null) PRINT7SPC(SPC(SPC( (null)PRINT10SPC(SPC((null) 16200 PRINT" [166] [166][164][164][164][164][166] [166][164][164][164][164][166] [166] 16300 [153]" SPC( SPC( SPC( SPC( SPC( SPC( 16400 PRINT" [166][166][166][166] [166][166][166][166] [166][166][166][166] 16500 P$[178]" CMDCMD ":[153]"":[141]17000:[153]"":[141]17100:[153]"":[141]17300 16600 P$[178]"STOP CMDCMD ":[153]"":[141]17500 16800 [142] 16900 [143] SQUARE 1 17000 [129]V[178]1[164]V(1):[153]"";:[130]:[129]H[178]1[164]H(1):[153]"";:[130]:[153]P$:[142] 17100 [129]V[178]1[164]V(2):[153]"";:[130]:[129]H[178]1[164]H(2):[153]"";:[130]:[153]P$:[142] 17200 [129]V[178]1[164]V(3):[153]"";:[130]:[129]H[178]1[164]H(3):[153]"";:[130]:[153]P$:[142] 17300 [129]V[178]1[164]V(4):[153]"";:[130]:[129]H[178]1[164]H(4):[153]"";:[130]:[153]P$:[142] 17400 [129]V[178]1[164]V(5):[153]"";:[130]:[129]H[178]1[164]H(5):[153]"";:[130]:[153]P$:[142] 17500 [129]V[178]1[164]V(6):[153]"";:[130]:[129]H[178]1[164]H(6):[153]"";:[130]:[153]P$:[142] 17600 [129]V[178]1[164]V(7):[153]"";:[130]:[129]H[178]1[164]H(7):[153]"";:[130]:[153]P$:[142] 17700 [129]V[178]1[164]V(8):[153]"";:[130]:[129]H[178]1[164]H(8):[153]"";:[130]:[153]P$:[142] 17800 [129]V[178]1[164]V(9):[153]"";:[130]:[129]H[178]1[164]H(9):[153]"";:[130]:[153]P$:[142] 17900 [129]V[178]1[164]V(10):[153]"";:[130]:[129]H[178]1[164]H(10):[153]"";:[130]:[153]P$:[142] 18000 [129]V[178]1[164]V(11):[153]"";:[130]:[129]H[178]1[164]H(11):[153]"";:[130]:[153]P$:[142] 18100 [143] INSTRUCTIONS 18200 [153]"LOAD" 18300 [153]" 2----5----8" 18400 [153]" /!(null) ! /!(null)" 18500 [153]" / ! (null) ! / ! (null)" 18600 [153]" / ! (null) ! / ! (null)" 18700 [153]" / ! (null)!/ ! (null)" 18800 [153]" 1----3----6----9----11" 18900 [153]" (null) ! /!(null) ! /" 19000 [153]" (null) ! / ! (null) ! /" 19100 [153]" (null) ! / ! (null) ! /" 19200 [153]" (null)!/ ! (null)!/" 19300 [153]" 4----7---10" 19500 [153]"" 19600 [153]" THE PLAYING FIELD FOR THE FRENCH 19700 PRINT"MILITARY GAME IS SHOWN ABOVE. YOU WILL" 19800 PRINT"PLAY WHITE AND WILL START WITH THREE" 19900 PRINT"MEN LOCATED AT 1, 2, AND 4. BLACK HAS" 20000 PRINT"ONLY ONE MAN, WHICH STARTS AT 6. WHITE" 20100 PRINT"HAS THE FIRST MOVE AND MAY MOVE ANY ONE" 20200 PRINT"PIECE ONE SPACE." 20300 PRINT" WHITE MAY ONLY MOVE UP, DOWN, OR TO" 20400 PRINT"THE RIGHT. BLACK MAY MOVE IN ANY DIREC-" 20500 PRINT"TION. NO PIECE MAY MOVE TO A SPACE" 20600 PRINT"OCCUPIED BY ANOTHER PIECE." 20700 PRINT:PRINT" << PRESS THE SPACE BAR TO CONTINUE >>"; 20800 POKE198,0:WAIT198,1:GETA$:IFA$<>" "THEN20800 20900 POKE198,0 21000 PRINT"[147]" 21100 PRINT" WHITE WINS THE GAME BY PINNING THE" 21200 PRINT"BLACK PIECE SO THAT BLACK HAS NO MOVE." 21300 PRINT"THIS USUALLY OCCURS WITH BLACK TRAPPED" 21400 PRINT"AT 11, BUT IF BLACK PLAYS POORLY IT MAY" 21500 PRINT"BE PINNED AT 5 OR 7. BLACK WINS BY" 21600 PRINT"REACHING 1 OR BY EVADING BEING PINNED" 21700 PRINT"FOR 20 MOVES." 21800 PRINT" WHITE CAN ALWAYS WIN IF HE PLAYS" 21900 PRINT"CORRECTLY AND DOES NOT MAKE ANY MIS-" 22000 PRINT"TAKES. BUT IF YOU WANT TO RESIGN JUST" 22100 PRINT"TYPE 0,0" 22200 PRINT"" 22210 PRINT" << PRESS THE SPACE BAR TO CONTINUE >>" 22300 POKE198,0:WAIT198,1:GETA$:IFA$<>" "THEN22300 22500 PRINT"[147]" 22600 PRINT" THE GAME IS VERY EASY TO WIN THE" 22700 PRINT"FIRST FEW TIMES IT IS PLAYED, BUT IT" 22800 PRINT"WILL LEARN FROM ITS MISTAKES AND BECOME" 22900 PRINT"INCREASINGLY MORE DIFFICULT TO BEAT." 23000 PRINT:PRINT" THE PROGRAM STORES WHAT IT HAS" 23100 PRINT"LEARNED IN AN ARRAY."; 23500 PRINT" THEREFORE" 23505 PRINT"THE GAME GETS INCREASINGLY DIFFICULT AS":PRINT"TIME GOES ON. 23700 [153]"" 23710 [153]" << PRESS THE SPACE BAR TO CONTINUE >>" 23750 [151]198,0:[146]198,1:[161]A$:[139]A$[179][177]" "[167]23750 23800 : 23900 [151]198,0 24000 [153]"LOAD" 24100 [142] 24200 [143] GIVEN TO [FAC FOR USE OF MEMBERSHIP OCTOBER 19 24200 [143] GIVEN TO [FAC FOR USE OF MEMBERSHIP OCTOBER 1981 24200 [143] 24210 [143] GIVEN TO SFAC FOR USE OF MEMBERSHIP OCTOBER 1981 24220 [143] 60000 [129] CO[178]2051 [164] 43838 60010 [139][194](CO)[178]19[167][139] [194](CO[170]1)[178]0 [167] [153]CO 60020 [130] 63000 [153]"LOAD"[199](34)"PAYLOAD"[199](34)",8":[153]"RUN" 63001 [151]631,13:[151]632,13:[151]198,2